package com.wangyu.talents.core.entity;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author wangyu
 * @Date 2018-09-03 16:03
 */
public class Page<T> {

  // 当前页
  private Integer currentPage = 1;
  // 每页显示的总条数
  private Integer pageSize = 10;
  // 总条数
  private Integer totalNum;
  // 是否有下一页
  private Integer isMore;
  // 总页数
  private Integer totalPage;
  // 开始索引
  private Integer startIndex;
  // 分页结果
  private List<T> items;
  // 分页参数
  private Map<String, Object> param;

  public Page() {
    super();
  }

  public Page(Integer currentPage, Integer pageSize, Integer totalNum) {
    super();
    this.currentPage = currentPage;
    this.pageSize = pageSize;
    this.totalNum = totalNum;
    this.totalPage = (this.totalNum + this.pageSize - 1) / this.pageSize;
    this.startIndex = (this.currentPage - 1) * this.pageSize;
    this.isMore = this.currentPage >= this.totalPage ? 0 : 1;
  }

  public Integer getCurrentPage() {
    return currentPage;
  }

  public void setCurrentPage(Integer currentPage) {
    this.currentPage = currentPage;
  }

  public Integer getPageSize() {
    return pageSize;
  }

  public void setPageSize(Integer pageSize) {
    this.pageSize = pageSize;
  }

  public Integer getTotalNum() {
    return totalNum;
  }

  public void setTotalNum(Integer totalNum) {
    this.totalNum = totalNum;
  }

  public Integer getIsMore() {
    return isMore;
  }

  public void setIsMore(Integer isMore) {
    this.isMore = isMore;
  }

  public Integer getTotalPage() {
    return totalPage;
  }

  public void setTotalPage(Integer totalPage) {
    this.totalPage = totalPage;
  }

  public Integer getStartIndex() {
    return startIndex;
  }

  public void setStartIndex(Integer startIndex) {
    this.startIndex = startIndex;
  }

  public List<T> getItems() {
    return items;
  }

  public Page<T> setItems(List<T> items) {
    this.items = items;
    return this;
  }

  /**
   * 获取参数
   */
  public Map<String, Object> getParam() {
    if (param == null) {
      param = new HashMap<String, Object>();
    }
    return param;
  }

  /**
   * 设置参数
   */
  public void setParam(Map<String, Object> param) {
    this.param = param;
  }
}
